package 二叉搜索树;


/**
 * https://leetcode-cn.com/problems/search-in-a-binary-search-tree/
 */
public class _700_二叉搜索树中的搜索 {
    /**
     * 先拿到根节点，通过对比传入的元素与根节点的元素的大小，移向左右子树。如果元素相等，那么返回该节点
     * 任意一个节点的值都`大于`其`左`子树所有节点的值
     * 任意一个节点的值都`小于`其`右`子树所有节点的值
     *
     * @param root
     * @param val
     * @return
     */
    public TreeNode searchBST(TreeNode root, int val) {
        if (root == null || root.val == val) return root;
        return root.val > val ? searchBST(root.left, val) : searchBST(root.right, val);
    }

    public TreeNode searchBST1(TreeNode root, int val) {
        while (root !=null){
            if (root.val == val) return root;
            root = root.val > val ? root.left : root.right;
        }
        return root;
    }
}
